Основни алгоритми над серијама елемената
У претходном поглављу описали смо основне итеративне алгоритме у варијанти у којој су примењени на мале серије тако да су имплементирани без коришћења петљи. У овом поглављу ћемо исте алгоритме применити да дуже серије елемената (укључујући и серије чији број елемената није унапред познат). Предуслов за имплементацију таквих алгоритама је коришћење петљи (каже се и циклуса).
Елементи програмског језика
У језику C++ постоје три
врсте петљи: while
, for
и
do-while
.
Петља while
Општи облик петље while
је:
while (uslov)
telo
У петљи while
испитује се вредност логичког израза
uslov
и уколико је он тачан, извршавају се наредбе задате
унутар тела петље. Ако се тело петље састоји од више наредби оне морају
бити наведене унутар витичастих заграда. Услов петље while
се први пут испитује пре извршавања тела петље. Када се тело изврши
услов се поново испитује и поступак се понавља све док се први пут не
деси да услов није испуњен. Свако извршавање тела петље називаћемо
једном итерацијом петље.
Петља for
Општи облик петље for
је:
for (inicijalizacija; uslov; korak)
telo
Петља for
се најчешће користи тако што се променљивој
(која се назива бројачка променљива) редом додељују вредности
од најмање до највеће и за сваку од тих вредности се извршавају наредбе
у оквиру тела петље (ако их је више, морају се навести у витичастим
заградама). У делу inicijalizacija
се поставља почетна
вредност бројачке променљиве (најчешће се на том месту и декларише
бројачка променљива), у делу uslov
се задаје услов петље
који се проверава у свакој итерацији и први пут када није испуњен петља
се прекида, док се у делу korak
мења вредност бројачке
променљиве. На пример, уколико желимо да испишемо све бројеве из
интервала [a,b]
то можемо да урадимо наредном петљом:
for (int i = a; i <= b; i++)
<< i << endl; cout
Свака петља for
може се једноставно изразити помоћу
петље while
. Иницијализацију je потребно извршити
непосредно пре петље while
, услов петље остаје исти, док се
корак петље додаје као последња наредба у телу петље while
.
Дакле, претходно исписивање бројева из интервала [a,b]
смо
могли да реализујемо и на следећи начин:
int i = a;
while (i <= b) {
<< i << endl;
cout ++;
i}
Петља do-while
Поред петље while
, постоји и петља
do-while
, која јој наликује у свему, осим што се услов
петље испитује на крају тела петље. Дакле, у овој петљи се тело извршава
барем једном, без обзира на то да ли је услов испуњен или не (јер се он
испитује на крају тела петље). На пример, наредни блок кода:
int i = a;
do {
<< i << endl;
cout ++;
i} while (i <= b);
би радио исправно ако је \(a \leq
b\), међутим у ситуацији када је \(a>b\) решење засновано на
for
и while
петљи не би исписивало ниједан
број (што бисмо и очекивали), док би овај блок кода исписивао број \(a\).
Прекиди петље
(break
и continue
)
Некада је у програму потребно написати петљу која се извршава бесконачно пута. Уобичајен начин да се то постигне је коришћењем наредног фрагмента кода:
while (true){
...
}
Услов ове while
петље је увек испуњен те се она извршава
бесконачно пута. Из овакве петље може се изаћи коришћењем наредби
break
и continue
. Наредба break
у
телу петље прекида извршавање петље. Наредба continue
прекида извршавање тела петље (тј. извршавање текуће итерације).
Основни алгоритми над серијама елемената
У претходном поглављу описали смо основне итеративне алгоритме у варијанти у којој су примењени на мале серије тако да су имплементирани без коришћења петљи. У овом поглављу ћемо исте алгоритме применити да дуже серије елемената (укључујући и серије чији број елемената није унапред познат). Предуслов за имплементацију таквих алгоритама је коришћење петљи (каже се и циклуса).
Елементи програмског језика
У језику C# постоје три врсте
петљи: while
, for
и do-while
.
Петља while
Општи облик петље while
је:
while (uslov)
telo
У петљи while
испитује се вредност логичког израза
uslov
и уколико је он тачан, извршавају се наредбе задате
унутар тела петље. Ако се тело петље састоји од више наредби оне морају
бити наведене унутар витичастих заграда. Услов петље while
се први пут испитује пре извршавања тела петље. Када се тело изврши
услов се поново испитује и поступак се понавља све док се први пут не
деси да услов није испуњен. Свако извршавање тела петље називаћемо
једном итерацијом петље.
Петља for
Општи облик петље for
је:
for (inicijalizacija; uslov; korak)
telo
Петља for
се најчешће користи тако што се променљивој
(која се назива бројачка променљива) редом додељују вредности
од најмање до највеће и за сваку од тих вредности се извршавају наредбе
у оквиру тела петље (ако их је више, морају се навести у витичастим
заградама). У делу inicijalizacija
се поставља почетна
вредност бројачке променљиве (најчешће се на том месту и декларише
бројачка променљива), у делу uslov
се задаје услов петље
који се проверава у свакој итерацији и први пут када није испуњен петља
се прекида, док се у делу korak
мења вредност бројачке
променљиве. На пример, уколико желимо да испишемо све бројеве из
интервала [a,b]
то можемо да урадимо наредном петљом:
for (int i = a; i <= b; i++)
.WriteLine(i); Console
Свака петља for
може се једноставно изразити помоћу
петље while
. Иницијализацију je потребно извршити
непосредно пре петље while
, услов петље остаје исти, док се
корак петље додаје као последња наредба у телу петље while
.
Дакле, претходно исписивање бројева из интервала [a,b]
смо
могли да реализујемо и на следећи начин:
int i = a;
while (i <= b)
{
.WriteLine(i);
Console++;
i}
Петља do-while
Поред петље while
, постоји и петља
do-while
, која јој наликује у свему, осим што се услов
петље испитује на крају тела петље. Дакле, у овој петљи се тело извршава
барем једном, без обзира на то да ли је услов испуњен или не (јер се он
испитује на крају тела петље). На пример, наредни блок кода:
int i = a;
do {
.WriteLine(i);
Console++;
i} while (i <= b);
би радио исправно ако је \(a \leq
b\), међутим у ситуацији када је \(a>b\) решење засновано на
for
и while
петљи не би исписивало ниједан
број (што бисмо и очекивали), док би овај блок кода исписивао број \(a\).
Прекиди петље
(break
и continue
)
Некада је у програму потребно написати петљу која се извршава бесконачно пута. Уобичајен начин да се то постигне је коришћењем наредног фрагмента кода:
while (true){
...
}
Услов ове while
петље је увек испуњен те се она извршава
бесконачно пута. Из овакве петље може се изаћи коришћењем наредби
break
и continue
. Наредба break
у
телу петље прекида извршавање петље. Наредба continue
прекида извршавање тела петље (тј. извршавање текуће итерације).